/**
 *
 *    DUT Informatique - IUT A - Université des Sciences et Technologies de Lille 1 - Villeneuve d'Ascq
 *    Cours AP12 - TP4 - EX4
 *    http://moodle.univ-lille1.fr/course/view.php?id=1089
 *    http://dutinfo.tk
 *
 *    @author : Yann Secq
 *              Frederic Guyomarch
 *              <a href="mailto:charles.herlin@etudiant.univ-lille1.fr">Charles Herlin</a>
 *
 *
 *   Programme de calcul du nombre de mots dans une phrase (chaine de caracteres)
 *   Counting the numbers of words in a sentence (string)
 *
 */

class EX4 extends Program {
    void algorithm() {
	
	print("Veuillez entrer une phrase : ");
	String phrase = readString(); //initialisation de la phrase a analyser
   
	//declaration des variables
	int cpt = 0;
	char cPrec = ' ';
	boolean enMot = false;
	boolean enMotPrec = false;

	//parcourir la chaine 'phrase'
	for(int i = 0; i<length(phrase); ++i){
	    //on definit le caractere precedent, a partir du deuxieme caractere
	    if(i>0)
        cPrec = charAt(phrase, (i-1));
    
	    //on sauvegarde l'etat precedent 'en mot' ou non
	    enMotPrec = enMot;
    
	    //on extrait le caractere courant
	    char c = charAt(phrase,i);

	    //si le caractere courant est une lettre, alors on est dans un mot
	    if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
        enMot = true; 

	    //analyse de la sortie de mot : si le caractere courant est different d'un alphabetique et que le caractere precedent est un alphabetique
	    if(!((c>='a'&&c<='z')||(c>='A'&&c<='Z'))&&((cPrec>='a'&&cPrec<='z')||(cPrec>='A'&&cPrec<='Z'))){
        enMot = false;
	
	    }
	    
	    //detection du 'front montant' et on incremente   
	    if(enMotPrec==false && enMot==true)
        ++cpt;

	}

	//affichage du resultat
	println("La phrase  \""+phrase+"\" contient "+(cpt)+" mots.");

  }
}

